package tec;
import java.util.Scanner;
import java.io.*;


public abstract class OptionClient{
    
    private static int choix;
	public boolean journalisation = false;
	public boolean sortie = false;
    /*
    public int getChoix(){
	return choix;
    } 
    */
    abstract public void lancer() throws TecInvalidException,IOException;
    

    protected  final  void menuProgramme(String s){
		System.out.println("--------------------------- Entrer votre choix ----------------------------");
		System.out.println("Executer " + s + " avec journalisation de l'autobus sur la sortie d'erreur------------- (1)");
		System.out.println("Executer " + s + " avec journalisation de l'autobus dans le fichier log.txt------------ (2)");
		System.out.println("Executer " + s + " sans journalisation de l'autobus ------------------- (3)");
		System.out.println("Quitter ---------------------------------------------------------------- (0)");
    }
	


    protected final void choixTypeExecution(String s) throws TecInvalidException, IOException{
	
		Scanner sc = new Scanner(System.in);
		menuProgramme(s);
		choix = sc.nextInt();
	
		while(choix!=0 && choix!=1 && choix!=2 && choix!=3){
			System.out.println("Erreur de syntaxe!!");
			menuProgramme(s);
			choix = sc.nextInt();
	}
	
	if(choix == 1 ){
	     System.out.println("Lancement de " + s + " avec journalisation avec sortie d'erreur");
	     System.out.println(""); 
		 journalisation = true;
	     sortie = true;
	     lancer();
	     System.out.println(""); 
	     System.out.println(""); 
	     System.exit(0);
	}
	if(choix == 2 ){
	     System.out.println("Lancement de " + s + " avec journalisation avec sortirfichier:log.txt");
	     System.out.println(""); 
	     journalisation = true;
	     sortie = false;
	     lancer();
	     affichage(s);
	     System.out.println(""); 
	     System.out.println(""); 
	     System.exit(0);
	}
	if(choix == 3){
	    System.out.println("Lancement de " + s + " sans journalisation"); 
	    System.out.println(""); 
	    journalisation = true;
	    sortie = false;
	    lancer();
	    System.out.println("\n\n\nFin du Programme de "+ s);
	    System.exit(0);
	   
	}
	    
	if(choix == 0){
	    System.out.println("Fin du programme");
	    return;
	}
	
    }
    
    protected  final void affichage(String s) throws IOException, TecInvalidException{
		System.out.println("\n\n\nLe journal de " + s + "  a ete cree dans le fichier log.txt\nVoulez-vous afficher le journal de l'autobus? (oui/non)");
		Scanner sc = new Scanner(System.in);
		String tmp = sc.nextLine();
		
		while(!tmp.equals("oui") && !tmp.equals("non")){
			System.out.println("Erreur de syntaxe!!");
			affichage(s);
			tmp = sc.nextLine();
		}
		if(tmp.equals("oui")){
			System.out.println("\n\nJournal de l'autobus de "+s + ":\n");
			affiche_journal(s);
			System.out.println("\n\nFin du programme");
		}
		else{
			System.out.println("\n");
			System.out.println("\n\nFin du programme");
		}
    }



	
    public void affiche_journal(String s) throws IOException, TecInvalidException {
	String ligne = "";
	String fichier = "log.txt";
	BufferedReader clavier = new BufferedReader(new InputStreamReader(System.in));
	BufferedReader ficTexte;
	try {
	    ficTexte = new BufferedReader(new FileReader(new File(fichier)));
	    if (ficTexte == null) {
		throw new FileNotFoundException("Fichier non trouve: " + fichier);
	    }
	    ligne = ficTexte.readLine();
	    while (ligne != null){
		    System.out.println(ligne);
		    ligne = ficTexte.readLine();
	    }
	    ficTexte.close();
	    System.out.println("\n\n");
	} catch (FileNotFoundException e) {
	    System.out.println(e.getMessage());
		} 
		catch (IOException e) {
			System.out.println(e.getMessage());
		}
    }
    
    






}
	    
